package com.zbkj.crmeb.merchant.admin.service;

import com.crmeb.core.common.CommonResult;
import com.common.PageParamRequest;
import com.github.pagehelper.PageInfo;
import com.zbkj.crmeb.agent.request.AdminAgentRequest;
import com.zbkj.crmeb.agent.response.AgentInfoResponse;
import com.zbkj.crmeb.chant.model.ChannelMerchant;
import com.zbkj.crmeb.chant.request.MerchantListRequest;
import com.zbkj.crmeb.chant.vo.ChannelMerchantVO;
import com.zbkj.crmeb.user.request.AgentUserRequest;
import com.zbkj.crmeb.user.response.UserResponse;

import java.util.List;

/**
 * 服务商-用户管理
 *
 * @author lvmd
 * @date 2022-02-18
 */
public interface MerAgentUserService {

    /**
     * 服务商用户列表
     *
     * @param searchRequest
     * @param pageParamRequest
     * @return
     */
    PageInfo<UserResponse> listAgentUsers(AgentUserRequest searchRequest, PageParamRequest pageParamRequest);

    /**
     * 服务商商户列表
     *
     * @param searchRequest    搜索条件
     * @param pageParamRequest 分页参数
     * @return
     */
    PageInfo<ChannelMerchantVO> listAgentMerchants(MerchantListRequest searchRequest, PageParamRequest pageParamRequest);

    /**
     * 分页显示服务商
     *
     * @param request          搜索条件
     * @param pageParamRequest 分页参数
     */
    PageInfo<AgentInfoResponse> listAgents(AgentUserRequest request, PageParamRequest pageParamRequest);

    /**
     * 服务商用户详情
     *
     * @param userId uid
     * @return
     */
    UserResponse getAgentUserDetail(Integer userId);

    /**
     * 服务商商户详情
     *
     * @param merchantId 商户id
     * @return
     */
    ChannelMerchantVO getAgentMerchantDetail(Integer merchantId);

    /**
     * 服务商详情
     *
     * @param id 服务商id
     * @return
     */
    AgentInfoResponse getAgentDetail(Integer id);

    /**
     * 商户下拉列表
     *
     * @param request
     * @return
     */
    CommonResult<List<ChannelMerchant>> listChannelMerchants(AdminAgentRequest request);

    /**
     * 账户详情
     *
     * @param userId
     * @param type
     * @param pageParamRequest
     * @return
     */
    Object getInfoByCondition(Integer userId, int type, PageParamRequest pageParamRequest);
}
